﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PhongMachTu.OConnection;
using PhongMachTu.OModel;

namespace PhongMachTu.OForm
{
    public partial class FormDisease : Form
    {
        public FormDisease()
        {
            InitializeComponent();
        }


        public void refreshDsDisease()
        {
            dsDisease.Items.Clear();
            ArrayList diseases = DataManipulate.getDiseaseList();
            if (diseases != null)
            {
                foreach (Disease disease in diseases)
                {
                    ListViewItem lvi = new ListViewItem(disease.NameDisease.ToString());
                    lvi.Tag = disease;

                    dsDisease.Items.Add(lvi);
                }
                diseases = null;
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                string title = txtTitleDisease.Text;
                if (title != "")
                {
                    if (!DataManipulate.isDiseaseExist(title))
                    {
                        if (DataManipulate.addDisease(title))
                        {
                            MessageBox.Show("Tạo mới thành công");
                            dsDisease.Items.Clear();
                            refreshDsDisease();
                        }
                        else
                        {
                            MessageBox.Show("Tạo mới không thành công");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Trùng tên bệnh lí trong dữ liệu");
                    }
                }
                else
                {
                    MessageBox.Show("Vui lòng điền tên bệnh lí");
                }
            }
            else
            {
                txtTitleDisease.Text = "";
                FormManager.diseaseForm.Hide();
                FormManager.loginForm.Show();
            }
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                if (txtTitleDisease.Text != "")
                {
                    if (!DataManipulate.isDiseaseExist(txtTitleDisease.Text))
                    {
                        if (dsDisease.SelectedItems.Count == 0) return;
                        ListViewItem selectedLvi = dsDisease.SelectedItems[0];
                        Disease disease = (Disease)selectedLvi.Tag;
                        disease.NameDisease = txtTitleDisease.Text;
                        if (DataManipulate.updateDisease(disease))
                        {
                            MessageBox.Show("Cập nhật thành công");
                            dsDisease.SelectedItems[0].Text = disease.NameDisease;
                        }
                        else
                        {
                            MessageBox.Show("Cập nhật không thành công");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Trùng tên bệnh lí trong dữ liệu");
                        txtTitleDisease.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("Vui lòng điền tên bệnh lí");
                }
            }
            else
            {
                FormManager.diseaseForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }

            
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                if (dsDisease.SelectedItems.Count == 0) return;
                ListViewItem selectedLvi = dsDisease.SelectedItems[0];
                Disease disease = (Disease)selectedLvi.Tag;

                if (DataManipulate.isDiseaseDeletable(disease))
                {
                    if (DataManipulate.deleteDisease(disease))
                    {
                        dsDisease.Items.Clear();
                        refreshDsDisease();
                        MessageBox.Show("Xóa bệnh lí thành công");
                    }
                    else
                    {
                        MessageBox.Show("Xóa bệnh lí thất bại");
                    }
                }
                else
                {
                    MessageBox.Show("Bệnh lí đã được dùng trong bệnh án, không thể xóa");
                }
            }
            else
            {
                FormManager.diseaseForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void dsDisease_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                if (dsDisease.SelectedItems.Count == 0) return;
                ListViewItem selectedLvi = dsDisease.SelectedItems[0];
                Disease disease = (Disease)selectedLvi.Tag;

                txtTitleDisease.Text = disease.NameDisease;
            }
            else
            {
                FormManager.diseaseForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void FormDisease_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            txtTitleDisease.Text = "";

            FormManager.diseaseForm.Hide();
            FormManager.mainForm.Show();
        }

        


    }
}
